#include<iostream>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
LL arr[N];
int cnt;
bool prime(LL x)
{
	if (x <= 1) {
		return 0;
	}
	for (int i = 2; i <= x / i; i++) {
		if (x % i == 0) {
			return 0;
		}
	}
	return 1;
}
void Init()
{
	for (LL i = 2; i <= 1e12; i++) {
		if (prime(i)) {
			if (i * i * i * i > 1e12) {
				break;
			}
			else {
				arr[++cnt] = i * i * i * i;
			}
		}
	}
}
int main()
{
	Init();
	int t;
	cin >> t;
	while (t--) {
		LL l, r;
		cin >> l >> r;
		int ans = 0;
		for (int i = 1; i <= cnt; i++) {
			if (arr[i] >= l && arr[i] <= r) {
				ans++;
			}
		}
		cout << ans << endl;
	}
	return 0;
}